﻿// RankingSejmowy 1.0 - Polish parliment statistics for the masses.
// Copyright (C) 2010 Jarosław Dubrownik
//  
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//  
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//  
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
using FluentNHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NUnit.Framework;
using RankingSejmowy.DAL.Conventions;

namespace RankingSejmowy.DAL.Tests
{
    public class NHibernateTestBase
    {
        private SessionSource _sessionSource;

        protected ISession Session { get; set; }
        protected IStatelessSession StatelessSession { get; set; }

        [SetUp]
        public void MyTestInitialize()
        {
            var cfg = Fluently.Configure().Database(SQLiteConfiguration.Standard.InMemory());
            cfg.Mappings(m => m.FluentMappings.Conventions.AddFromAssemblyOf<EnumConvention>());
            _sessionSource = new SessionSource(cfg.BuildConfiguration().Properties,
                                               new TestModel());
            Session = _sessionSource.SessionFactory.OpenSession();
            StatelessSession = _sessionSource.SessionFactory.OpenStatelessSession();
            _sessionSource.BuildSchema(Session);
        }

        [TearDown]
        public void MyTestCleanup()
        {
            Session.Close();
            Session.Dispose();
        }
    }
}